#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define num 256

//块存储字符串,每一个节点存储若干个字符串
typedef struct Link{
    char elem[num];
    struct Link* next;
} Link;

//初始化字符串链表
Link* init_link(Link* head,char* str);

//展示链表中的元素
void display(Link* head);

int main()
{
    Link* head=(Link* )malloc(sizeof(Link));
    head->next=NULL;
    strcpy(head->elem,"hello");
    init_link(head,"world!");
    init_link(head,"heiye");
    init_link(head,"mitu");
    init_link(head,"qiufeng");
    init_link(head,"xiaoxia");
    
    display(head);
    return 0;
}

Link* init_link(Link* head,char* str)
{
    Link* new_node=(Link* )malloc(sizeof(Link));
    strcpy(new_node->elem,str);
    new_node->next=NULL;

    //判断链表是否为空
    if(head==NULL)
    {
        head=new_node;
        return head;
    }

    //如果只有一个节点
    if(head->next==NULL)
    {
        head->next=new_node;
        return head;
    }

    Link* tmp=head;
    while(tmp->next!=NULL)
    {
        tmp=tmp->next;
    }
    tmp->next=new_node;
    return head;
}

void display(Link* head)
{
    //判断链表是否为空
    if(head==NULL)
    {
        printf("链表为空!\n");
        return;
    }

    //判断链表是否只有一个元素
    if(head->next==NULL)
    {
        printf("链表中只有一个元素:%s\n",head->elem);
        return;
    }

    Link* tmp=head;
    while(tmp!=NULL)
    {
        printf("%s\n",tmp->elem);
        tmp=tmp->next;
    }
}